//
// Copyright (c) 2016-2019 Vinnie Falco (vinnie dot falco at gmail dot com)
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
//
// Official repository: https://github.com/boostorg/beast
//

#ifndef BOOST_BEAST_RTSP_FIELD_HPP
#define BOOST_BEAST_HTTP_FIELD_HPP

#include <boost/beast/core/detail/config.hpp>
#include <boost/beast/core/string.hpp>
#include <iosfwd>

namespace boost {
namespace beast {
namespace rtsp {

    enum class field : unsigned short
    {
        unknown = 0,
        accept,
        accept-Encoding,
        accept-Language,
        allow,
        authorization,
        bandwidth,
        blocksize,
        cache-control,
        conference,
        connection,
        content-base,
        content-encoding,
        content-language,
        content-length,
        content-location,
        content-type,
        cseq,
        date,
        expires,
        from,
        if-modified-since,
        last-modified,
        proxy-authenticate,
        proxy-require,
        public_,
        range,
        referer,
        require,
        retry-after,
        rtp-info,
        scale,
        session,
        server,
        speed,
        transport,
        unsupported,
        user-agent,
        via,
        www-authenticate
    };
/** Convert a field enum to a string.

    @param f The field to convert
*/
BOOST_BEAST_DECL
string_view
to_string(field f);

/** Attempt to convert a string to a field enum.

    The string comparison is case-insensitive.

    @return The corresponding field, or @ref field::unknown
    if no known field matches.
*/
BOOST_BEAST_DECL field string_to_field(string_view s);

/// Write the text for a field name to an output stream.
BOOST_BEAST_DECL
std::ostream& operator<<(std::ostream& os, field f);

} // rtsp
} // beast
} // boost

#ifdef BOOST_BEAST_HEADER_ONLY
#include <boost/beast/rtsp/impl/field.ipp>
#endif

#endif
